package DAO;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import to.Pessoa;
import to.Propriedade;
import to.Propriedade;
import util.HibernateUtil;

public class PropriedadeDAO {
	public List<Propriedade> buscaTodos() throws Exception {
		List<Propriedade> listaRetorno = null;
		try {
			Session session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Propriedade.class);
			criteria.addOrder(Order.asc("nome"));
			listaRetorno = (List<Propriedade>) criteria.list();
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}
		return listaRetorno;
	}
	public Propriedade buscarPorCodigo(Integer id) throws Exception {
		Session session = null;
		Propriedade p = new Propriedade();
		try {
			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Propriedade.class);
			p = (Propriedade) criteria.uniqueResult();
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} finally {
			session.close();
		}
		return p;
	}
	public List<Propriedade> buscarPropriedadePorPessoa(Pessoa pessoa) throws Exception {
		List<Propriedade> lista = null;
		try {
			Session sessao = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = sessao.createCriteria(Propriedade.class);
			criteria.add(Restrictions.eq("pessoa", pessoa));
			criteria.addOrder(Order.asc("nome"));
			lista = (List<Propriedade>) criteria.list();
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}
		return lista;
	}
}
